Javascript Promise
Promiseの利点
thenableなインターフェースが提供されて、直列的に書ける
コード上で、メインスレッド?から脱線せずにコードが書ける、読める
エラー処理をシンプルにする
catchable?なインターフェースが提供されて、エラー処理を集約?しやすくできる Promiseの状態
Fullfilled, Rejected, Pending の3つがある
Promiseの作り方
constructorを使って : var promise = new Promise(function(resolve, reject){/*...*/});
Promise.resolve() Promise.reject()というクラスメソッドで、ショートカットで作ることも可能
Promiseを返す有名どころの関数:
fetch()
io系なものは、promiseを返すものがおおいかな? ioが入る時点で非同期になるのはOSから?
Promiseの使いかた
instrance methodで、 promise.then(onFullfiled, onRejected)
then()は常に新しいpromiseオブジェクトを返す。 chainingしてるつもりになってると、気をつける
promise.catch()もある。
実装の流れ. 引数が関数というのがしっくりこないと???となる。
Promiseコンストラクタは2つのパラメータを持つ1つのコールバックを引数に取る
当たり前の言い換えだけど、callbackを取る関数があり、さらにそのcallback関数は2つの引数を取る。その2つの引数は関数。
var promise = new Promise(function(resolve, reject) { … })
errorでも, rejectがよばれる。 その際に、errorオブジェクトが渡される
コンストラクトしてできたオブジェクトは、.then() というcallbackをもち、そこで promiseが fullfill(resolve or rejucted)された後の結果を受け取って処理をする。
callbackの約束を書いた(引数にとったよ)、そのcallbackは成功時、失敗時の2つのパターンを取れるようにした。
非同期処理の複雑なエラーハンドリングを分かりやすく書くことが出来る点等もメリット
参考
Promise の resolve 後の挙動は..
1. resolve で Promise の状態は fulfilled に
2. 処理は継続
3. 処理が全て終わってから値がリター
普段、javascript書かないので、上記のこのリンクが調べるきっかけになった。初心者に親切。